Many cloud operators currently host cloud services using a few large data centers, providing a relatively centralized operation. In such systems, a requestor may request the use of one or more resources from a cloud controller which may, in turn, allocate the requested resources from the data center for use by the requestor. This centralized operation, however, may not be well suited for hosting various types of applications, such as those with strict delay or reliability requirements.
Distributed data center architectures, on the other hand, provide a larger number of smaller data centers that may be geographically distributed. The data centers may remain under the control of one or more cloud controllers through a network such as the Internet or carrier networks. Under such a distributed system, the effects of network propagation delay may be reduced by providing cloud applications that are closer to various customers in terms of geographic or network distance than a centralized cloud may be able to provide.
In both types of cloud networks, it is occasionally advantageous to rearrange resources provisioned for a customer among the available devices. For example, changing network conditions may render a device unsuitable for continued support of a customer resource due to degraded connectivity, heightened customer application reliance on inter-resource communication may lead to a desire to move such resources geographically close to each other, or increased load one device may lead to a desire to move resources to less heavily-loaded devices.